package com.hopu.service.MyRole;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hopu.entity.MyRole;
import com.hopu.mapper.MyRoleMapper;
import com.hopu.util.HouseResult;
import com.hopu.util.StaticData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Package: com.hopu.service
 * @ClassName: MyRoleServiceImple
 * @Author: xiaoBao
 * @CreateTime: 2020/10/27 16:29
 * @Description: 【岗位信息（角色信息）功能服务层实现类】
 */
@Service("myRoleServiceImple")  /**定义服务层*/
public class MyRoleServiceImple implements MyRoleService{
    @Autowired  /**自动装载MyRoleMapper动态接口（持久层）*/
    private MyRoleMapper myRoleMapper;


    /**
     * findAllRoleInfo 【查询所有角色信息显示到岗位信息列表】
     * @param current 当前页（起始页）
     * @return 将查询到的角色信息集合进行分页并返回给表现层。
     */
    @Override
    public HouseResult<PageInfo<MyRole>> findAllRoleInfo(Integer current) {
        /**使用分页技术*/
        //1、使用startPage方法：参数1：配置 “分页的初始页”；参数2：“当前页要显示的信息行数”；
        PageHelper.startPage(current,StaticData.DEFAULT_PAGE_SIZE);

        //2、调用持久层操作：查询所有角色信息；
        List<MyRole> roleList = myRoleMapper.findAllRoleInfo();

        //3、实例化PageInfo对象，将角色信息集合进行分页；
        PageInfo<MyRole> rolePageInfo = new PageInfo<>(roleList);

        //如果集合的大小不为0
        if(roleList.size() != 0){
            return new HouseResult<>(0,"查询成功",rolePageInfo);
        }else {
            return new HouseResult<>(1,"查询失败",rolePageInfo);
        }
    }


    /**
     * findRole 【查询用户名称是否存在（或根据Id查询一条岗位信息，实现修改弹窗的数据回显）】
     * @param myRole 角色名称；
     * @return 将查询结果返回给表现层。
     */
    @Override
    public HouseResult<MyRole> findRole(MyRole myRole) {
        //调用持久层操作：查询角色名称是否存在
        MyRole roles = myRoleMapper.findRole(myRole);

        //如果查询到的结果为空
        if(roles == null){
            return new HouseResult<>(1,"角色名称不存在",roles);
        }else {
            return new HouseResult<>(0,"角色名称已存在",roles);
        }
    }


    /**
     * addRole 【添加一条岗位信息（角色名称）】
     * @param myRole 角色名称；
     * @return 将执行结果返回给表现层。
     */
    @Override
    public HouseResult<Object> addRole(MyRole myRole) {
        //调用持久层操作：添加一条角色信息；
        Integer successResult = myRoleMapper.addRole(myRole);

        //如果返回的结果不为0，则表示添加成功
        if(successResult != 0){
            return new HouseResult<>(0,"添加岗位信息成功",successResult);
        }else {
            return new HouseResult<>(1,"添加岗位信息失败",successResult);
        }
    }


    /**
     * updateRole 【根据Id修改一条岗位信息（角色名称）】
     * @param myRole 角色名称、Id；
     * @return 将执行结果返回给表现层。
     */
    @Override
    public HouseResult<Object> updateRole(MyRole myRole) {
        //调用持久层操作：根据Id修改一条角色信息；
        Integer successResult = myRoleMapper.updateRole(myRole);

        //如果返回的结果不为0，则表示修改成功
        if(successResult != 0){
            return new HouseResult<>(0,"添加岗位修改成功",successResult);
        }else {
            return new HouseResult<>(1,"添加岗位修改失败",successResult);
        }
    }


    /**
     * findAllRoleJidAndJname 【查询所有角色Id和名称（用于实现添加员工时在下拉框中回显所有角色信息）】
     * @return 将查询到的数据返回给表现层
     */
    @Override
    public HouseResult<List<MyRole>> findAllRoleJidAndJname() {
        //调用持久层操作：查询所有角色信息（只取角色Id和Name）
        List<MyRole> allRoleInfo = myRoleMapper.findAllRoleInfo();

        //判断如果集合的数据不为空
        if(allRoleInfo.size() != 0){
            return new HouseResult<>(0,"查询成功",allRoleInfo);
        }else {
            return new HouseResult<>(1,"查询失败",allRoleInfo);
        }
    }
}
